import random
import time
from datetime import datetime, timedelta
import json

# 基础数据范围
HEART_RATE_RANGE = (60, 100)  # 心率范围（次/分）

# 生成随机数据
def generate_data():
    return {
        "heartRate": round(random.uniform(*HEART_RATE_RANGE), 1),
        "timestamp": datetime.now().isoformat()
    }

# 生成多组测试数据
def generate_test_data(num_records=100):
    test_data = []
    base_time = datetime.now() - timedelta(minutes=num_records)
    
    for i in range(num_records):
        current_time = base_time + timedelta(minutes=i)
        data = {
            "heartRate": round(random.uniform(*HEART_RATE_RANGE), 1),
            "timestamp": current_time.isoformat()
        }
        test_data.append(data)
    
    return test_data

# 保存数据到JSON文件
def save_to_json(data, filename):
    with open(filename, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=2)

# 生成不同场景的测试数据
def generate_scenario_data():
    scenarios = {
        "normal": [],  # 正常数据
        "exercise": [],  # 运动场景
        "sleep": [],  # 睡眠场景
        "stress": []  # 压力场景
    }
    
    # 生成正常数据
    for _ in range(50):
        data = generate_data()
        scenarios["normal"].append(data)
    
    # 生成运动场景数据（心率较高）
    for _ in range(30):
        data = generate_data()
        data["heartRate"] = round(random.uniform(80, 150), 1)  # 运动时心率升高
        scenarios["exercise"].append(data)
    
    # 生成睡眠场景数据（心率较低）
    for _ in range(40):
        data = generate_data()
        data["heartRate"] = round(random.uniform(50, 70), 1)  # 睡眠时心率降低
        scenarios["sleep"].append(data)
    
    # 生成压力场景数据（心率波动大）
    for _ in range(35):
        data = generate_data()
        data["heartRate"] = round(random.uniform(70, 120), 1)  # 心率波动大
        scenarios["stress"].append(data)
    
    return scenarios

if __name__ == "__main__":
    # 生成所有场景的数据
    all_scenarios = generate_scenario_data()
    
    # 保存到不同的JSON文件
    for scenario, data in all_scenarios.items():
        filename = f"test_data_{scenario}.json"
        save_to_json(data, filename)
        print(f"已生成{len(data)}条{scenario}场景的测试数据，保存到{filename}")
    
    # 生成一组实时数据用于测试
    realtime_data = generate_data()
    save_to_json(realtime_data, "realtime_data.json")
    print("已生成实时测试数据，保存到realtime_data.json") 